<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Add a pattern to a polygon</title>
    <meta
      name="viewport"
      content="initial-scale=1,maximum-scale=1,user-scalable=no"
    />
    <script src="../../lib/mapbox-gl.js"></script>
    <link href="../../lib/mapbox-gl.css" rel="stylesheet" />
    <script src="../../lib/axios.min.js"></script>
    <style>
      body {
        margin: 0;
        padding: 0;
      }
      #map {
        position: absolute;
        top: 0;
        bottom: 0;
        width: 100%;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>
      let baseDataUrl = `http://${localStorage.getItem(
        "host"
      )}/mapbox-gl-js-offline-examples`;
      axios
        .get(
          baseDataUrl +
            `/resources/styles/${localStorage.getItem(
              "mbtilesStylesName"
            )}.json`
        )
        .then((res) => {
          let data = res.data;
          initMap(data);
        })
        .catch((err) => {
          console.error(err);
        });

      function initMap(style) {
        let map = new mapboxgl.Map({
          container: "map",
          center: [34.304,11.577],
          zoom: 2,
          style: style,
        });

        map.on("load", function () {
          // Add GeoJSON data
          map.addSource("source", {
            type: "geojson",
            data: {
              type: "Feature",
              properties: {},
              geometry: {
                type: "Polygon",
                coordinates: [
                  [
                    [-30, -25],
                    [-30, 35],
                    [30, 35],
                    [30, -25],
                    [-30, -25],
                  ],
                ],
              },
            },
          });

          // Load an image to use as the pattern
          map.loadImage(
            baseDataUrl + "/data/images/icon/64px-Cat_silhouette.svg.png",
            function (err, image) {
              // Throw an error if something went wrong
              if (err) throw err;

              // Declare the image
              map.addImage("pattern", image);

              // Use it
              map.addLayer({
                id: "pattern-layer",
                type: "fill",
                source: "source",
                paint: {
                  "fill-pattern": "pattern",
                },
              });
            }
          );
        });
      }
    </script>
  </body>
</html>
